package com.cn.rjt;

/**
 *
 */
public class TwoIntegers {

        /**
         * 该方法求两个数的和。
         * <p>要求输入的两个参数范围为 [1,99]</p>
         *
         * @param n  其中一个加数
         * @param m  其中一个加数
         * @return  最终结果
         */
        public int sum(int n, int m) {
            // 前置断言
            assert n >= 1 && n <= 99;
            assert m >= 1 && m <= 99;

            return n + m;
        }

        /**
         * 该方法求两个数的和。
         * <p>要求输入的两个参数范围为 [1,99]。同时结果必须小于100</p>
         *
         * @param n  其中一个加数
         * @param m  其中一个加数
         * @return  最终结果
         */
        public int sumLt100(int n, int m) {
            // 前置断言
            assert n >= 1 && n <= 99;
            assert m >= 1 && m <= 99;
            assert n+m < 100;

            return n + m;
        }

        /**
         * 该方法求两个数的和或者差。
         * <p>要求输入的两个参数范围为 [1,99]。同时结果必须在 [0,99]</p>
         *
         * @param n  其中一个操作数
         * @param m  其中一个操作数
         * @param operation  运算标志。其中true为加法
         * @return  最终结果
         */
        public int sumAndSub(int n, int m, boolean operation) {
            // 前置断言
            assert n >= 1 && n <= 99;
            assert m >= 1 && m <= 99;

            if (operation) {
                assert n + m < 100 && n + m > -1;
                return n + m;
            }else {
                assert n - m < 100 && n - m > -1;
                return n - m;
            }
        }
}

